<h2>Why is this an issue?</h2>
<p>Clear, communicative naming is important in code. It helps maintainers and API users understand the intentions for and uses of a unit of code.
Using "exception" in the name of a class that does not extend <code>Exception</code> or one of its subclasses is a clear violation of the expectation
that a class' name will indicate what it is and/or does.</p>
<h3>Noncompliant code example</h3>
<pre>
public class FruitException // Noncompliant - this has nothing to do with Exception
{
  private Fruit expected;
  private string unusualCharacteristics;
  private bool appropriateForCommercialExploitation;
  // ...
}

public class CarException // Noncompliant - does not derive from any Exception-based class
{
  public CarException(string message, Exception inner)
  {
     // ...
  }
}
</pre>
<h3>Compliant solution</h3>
<pre>
public class FruitSport // Compliant - class name does not end with 'Exception'
{
  private Fruit expected;
  private string unusualCharacteristics;
  private bool appropriateForCommercialExploitation;
  // ...
}

public class CarException: Exception // Compliant - correctly extends System.Exception
{
  public CarException(string message, Exception inner): base(message, inner)
  {
     // ...
  }
}
</pre>

